﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SOM.AbstractDALFactory;
using SOM.ConcreteDALFactory;
using SOM.ConcreteDAL;
using SOM.Model;
using SOM.Common;
using System.Web.Security;
using SOM.ConcreteBL;

public partial class Administracao_UsuariosAdm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Usuario usuario = Common.RetornarUsuarioSessao(this);

            if (usuario == null)
            {
                FormsAuthentication.RedirectToLoginPage();
                return;
            }

            if (usuario.usr_id_grupo != (int)GrupoDoUsuario.Administrador)
            {
                Response.Redirect("~/Erro/AcessoNegado.aspx");
                return;
            }
            CarregarGridUsuario();
        }

        if (Request["__EVENTARGUMENT"] != null && Request["__EVENTARGUMENT"].ToString() != string.Empty)
        {
            ExcluirUsuario(Request["__EVENTARGUMENT"]);
        }
    }

    private void ExcluirUsuario(string dsNickname)
    {
        try
        {
            UsuarioBL usuarioBL = new UsuarioBL();
            usuarioBL.Delete(dsNickname);
            CarregarGridUsuario();
        }

        catch (Exception ex)
        {
            throw new InvalidOperationException("Não foi possível excluir esse usuário", ex);
        }
    }

    private void CarregarGridUsuario()
    {
        SOMAbstractDALFactory factory = new SOMConcreteDALFactory();
        UsuarioDAL usuarioDAL = factory.CreateUsuarioDAL();

        grvUsuarios.DataSource = usuarioDAL.ReturnAll();
        grvUsuarios.DataBind();
    }
    protected void grvUsuarios_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            HyperLink hlkExcluirReclamacao = (HyperLink)e.Row.FindControl("hlkExcluirUsuario");
            hlkExcluirReclamacao.NavigateUrl = "javascript:ExcluirUsuario('" + e.Row.Cells[0].Text + "')";
            
            SOMAbstractDALFactory factory = new SOMConcreteDALFactory();
            UsuarioDAL usuarioDAL = factory.CreateUsuarioDAL();

            DropDownList ddlGrupoUsuario = (DropDownList)e.Row.FindControl("ddlGrupoUsuario");
            if (ddlGrupoUsuario == null) return;

            Usuario usuario = usuarioDAL.FindByNickname(e.Row.Cells[0].Text);
            if (usuario == null) return;

            ddlGrupoUsuario.SelectedValue = usuario.usr_id_grupo.ToString();

        }
    }
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect(FormsAuthentication.DefaultUrl);
    }
    protected void btnSalvar_Click(object sender, EventArgs e)
    {
        UsuarioBL usuarioBL = new UsuarioBL();

        foreach (GridViewRow row in grvUsuarios.Rows)
        {
            DropDownList ddlGrupoUsuario = (DropDownList)row.FindControl("ddlGrupoUsuario");
            Usuario usuario = usuarioBL.Load(row.Cells[0].Text);

            usuario.usr_id_grupo = int.Parse(ddlGrupoUsuario.SelectedItem.Value);

            usuarioBL.Update(usuario);
        }
    }
}
